package com.xj.algorithm.leetcode;

/**
 * 阶乘后的零
 */
public class L172_阶乘后尾数中的0的个数 {

    /**
     * 给定一个整数 n，返回 n! 结果尾数中零的数量。
     * <p>
     * 示例 1:
     * <p>
     * 输入: 3
     * 输出: 0
     * 解释: 3! = 6, 尾数中没有零。
     * 示例 2:
     * <p>
     * 输入: 5
     * 输出: 1
     * 解释: 5! = 120, 尾数中有 1 个零.
     */

    public static void main(String[] args) {
        System.out.println(trailingZeroesOffice(5));
        System.out.println(trailingZeroesOffice(10));
        System.out.println(trailingZeroesOffice(15));
        System.out.println(trailingZeroesOffice(20));
        System.out.println(trailingZeroesOffice(25));
        System.out.println(trailingZeroesOffice(30));
        System.out.println(trailingZeroesOffice(2147483647));
    }

    //官方解法：最终 5 的个数就是 n / 5 + n / 25 + n / 125 ...
    public static int trailingZeroesOffice(int n) {
        int count = 0;
        while (n > 0) {
            count += n / 5;
            n = n / 5;
        }
        return count;
    }
}